<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // 狗的问题

        //   有一只2岁的柯基

        // 
        // const name = '柯基';
        // const age = 2;


        // // 对象的方式   --- 创建一个
        // const dog = {
        //     name: '柯基',
        //     age: 2
        // }


        //   又有一只3岁的哈士奇
        function dog(name, age) {
            console.log('有一只' + age + '岁的' + name);
        }



        // 对象的方式


        // 工厂模式创建对象
        function Dog(name, age) {
            // 创建一个对象
            const obj = {};
            obj.name = name;
            obj.age = age;
            obj.say = function () {
                console.log('有一只' + this.age + '岁的' + this.name);
            }
            return obj
        }


        // 函数的优点 ---- 复用性
        dog('哈士奇', 2);
        dog('柯基', 3);



        const d2 = Dog('哈士奇', 2);
        d2.say()

        const d3 = Dog('柯基', 3);
        d3.say();


        console.log(d2.say === d3.say);   // false   方法不是共享的

        console.log(d2 instanceof Dog);   // false  d2不是由Dog生的   






        const arr1 = [];
        const arr2 = [];

        // js当中的这些构造函数创建处理的实例   方法是共享的

        console.log(arr1.push === arr2.push)   // true

        console.log(arr1 instanceof Array);    // true




    </script>

</body>

</html>